/*
 * Types.h
 *
 *  Created on: 18 Aug 2011
 *      Author: Allan
 */

#ifndef TYPES_H_
#define TYPES_H_

// C++ includes
#include <functional>

// Eigen includes
#include "Eigen/Core"
using namespace Eigen;

typedef unsigned 
Index;

typedef std::function<const double(double T, double P)>
FunctionTP;

typedef std::function<const double(double T, double P, const VectorXd& n)>
FunctionTPn;

typedef std::function<const double(double T, double P, const VectorXd& n, const VectorXd& a)>
FunctionTPna;

inline const FunctionTP
ConstantTP(double val) { return [=](double T, double P) { return val; }; }

inline const FunctionTPn
ConstantTPn(double val) { return [=](double T, double P, const VectorXd& n) { return val; }; }

inline const FunctionTPna
ConstantTPna(double val) { return [=](double T, double P, const VectorXd& n, const VectorXd& a) { return val; }; }

#endif /* TYPES_H_ */
